package br.unifor.cadeventos.business;

import java.sql.SQLException;
import java.util.List;

import org.apache.log4j.Logger;

import br.unifor.cadeventos.dao.TipoEventosDAO;
import br.unifor.cadeventos.entity.TipoEventos;
import br.unifor.cadeventos.exceptions.BusinessException;
import br.unifor.cadeventos.internacionalizacao.Messagens;

public class TipoEventoBusiness {

	Logger logger = Logger.getLogger(TipoEventoBusiness.class);
	private TipoEventosDAO tipoEventoDAO = new TipoEventosDAO();

	public void novoTipoEvento(TipoEventos tipoEvento) throws BusinessException {
		
		logger.debug("iniciando metodo[classe = "
				+new Throwable().getStackTrace()[0]);
		
		try {
			List<TipoEventos> tipoEventos = tipoEventoDAO
					.buscarPorDescricao(tipoEvento);

			if (tipoEventos != null && tipoEventos.isEmpty()) {
				tipoEventoDAO.salvar(tipoEvento);
			} else {
				throw new BusinessException(Messagens.MSG_EXRG1);
			}
		} catch (SQLException e) {
			logger.error(e, e);
			throw new BusinessException(Messagens.MSG_INSERCAO_EX);
		} catch (BusinessException e) {
			logger.error(e, e);
			throw e;
		}

		logger.debug("finalizando metodo[classe = "
				+new Throwable().getStackTrace()[0]);
	}
	
	public List<TipoEventos> buscarPorDescricao(TipoEventos tipoEvento) throws BusinessException {
		logger.debug("iniciando metodo[classe = "
				+new Throwable().getStackTrace()[0]);
		
		List<TipoEventos> tipoEventos = null;
		try {
			tipoEventos = tipoEventoDAO.buscarPorDescricao(tipoEvento);
		} catch (SQLException e) {
			logger.error(e, e);
			throw new BusinessException(Messagens.MSG_INSERCAO_EX);
		}
		
		logger.debug("finalizando metodo[classe = "
				+new Throwable().getStackTrace()[0]);
		
		return tipoEventos;
		

	}
	
}
